home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 2: CDPD 1
/
Almathera Ten on Ten - Disc 2: CDPD 1.iso
/
pd
/
301-325
/
325
/
batchman
/
code
/
batchintuition.mod
< prev
next >
Wrap
Text File
|
1995-03-14
|
4KB
|
152 lines
(* Copyright 1988 Michal Todorovic *)
IMPLEMENTATION MODULE BatchIntuition;
FROM Intuition IMPORT WindowPtr, IDCMPFlags,
IDCMPFlagsSet, WindowFlags, WindowFlagsSet,
GadgetPtr, CloseWindow, SimpleRefresh;
FROM SYSTEM IMPORT ADR, BYTE, ADDRESS;
FROM DosStuff IMPORT LongString, ShortString, MaxGadgets;
FROM Strings IMPORT StringLength, ConcatString,
InsertSubString;
FROM SimpleGadgets IMPORT BeginGadgetList, AddGadgetString,
AddGadgetTextButton, EndGadgetList;
FROM SimpleWindows IMPORT CreateWindow, WindowMaxHeight,
WindowMaxWidth, WindowDetailPen;
VAR
First : BOOLEAN;
(**********************************************************)
(* Puts spaces in an array. *)
(**********************************************************)
PROCEDURE CreateSpaces(VAR Info : ARRAY OF CHAR;
Num : CARDINAL);
VAR
X : CARDINAL;
BEGIN
FOR X := 0 TO (Num - 1) DO
Info[X] := ' '
END;
Info[Num] := 0C
END CreateSpaces;
(**********************************************************)
(* Centers a gadget name in the gadget. *)
(**********************************************************)
PROCEDURE Center(VAR Info : ARRAY OF CHAR);
VAR
HowMany,
Length : CARDINAL;
Dum : ARRAY[0..7] OF CHAR;
BEGIN
Length := StringLength(Info);
HowMany := (15 - Length) DIV 2;
CreateSpaces(Dum, HowMany);
InsertSubString(Info, Dum, 0);
CreateSpaces(Dum, (15-HowMany-Length));
ConcatString(Info, Dum)
END Center;
(**********************************************************)
(* Opens a window. *)
(**********************************************************)
PROCEDURE OpenWin(VAR Win : WindowPtr; Gad : GadgetPtr;
H : INTEGER);
BEGIN
(* Compensate for interlace screens. Won't hurt
non-interlace screens. *)
INC(WindowMaxHeight, WindowMaxHeight);
WindowDetailPen := BYTE(2);
Win := CreateWindow(0, 1, 640, H,
IDCMPFlagsSet{Closewindow,GadgetUp,
RefreshWindow},
WindowFlagsSet{WindowClose, WindowDrag,
WindowDepth, Activate, WindowSizing}
+ SimpleRefresh,
Gad, NIL,
ADR("BATCHMAN! by Michal Todorovic. V1.1"))
END OpenWin;
(**********************************************************)
(* Closes a window. *)
(**********************************************************)
PROCEDURE CloseWin(VAR Win : WindowPtr);
BEGIN
IF Win <> NIL THEN
CloseWindow(Win^)
END
END CloseWin;
(**********************************************************)
(* Creates all the gadgets. *)
(**********************************************************)
PROCEDURE SetUpGadgets(Num : INTEGER;
VAR Info : ARRAY OF ShortString;
VAR Top : INTEGER) : GadgetPtr;
VAR
Left,
Mult,
Length,
Counter : INTEGER;
BEGIN
(* compensate for overscan. *)
Mult := 163;
Left := 10;
Top := 15;
BeginGadgetList();
FOR Counter := 0 TO (Num - 1) DO
IF First THEN
Center(Info[Counter])
END;
AddGadgetTextButton(Left, Top, ADR(Info[Counter]));
IF (((Counter + 1) MOD 4) = 0) THEN
INC(Top, 15) (* go to new line *)
END;
(* decide how far left to go. *)
Left := 10 + (((Counter + 1) MOD 4) * Mult)
END;
IF (Counter MOD 4) = 0 THEN
INC(Top, 5)
ELSE
INC(Top, 20)
END;
AddGadgetString(10, Top, 75, 100, NIL);
First := FALSE;
RETURN EndGadgetList()
END SetUpGadgets;
BEGIN
First := TRUE;
END BatchIntuition.